/*
 * Copyright (c) 2013.
 * 游戏服务器核心代码编写人陈磊拥有使用权
 * 联系方式：E-mail:13638363871@163.com ;qq:502959937
 * 个人博客主页：http://my.oschina.net/chenleijava
 */

package com.dc.gameserver.serverCore.model.dbsql.modelService;

import com.dc.gameserver.baseConfig.Config;
import com.dc.gameserver.exceptions.dataException;
import com.dc.gameserver.serverCore.model.dbsql.mapper.TRoleMapper;
import com.dc.gameserver.serverCore.model.dbsql.modelVo.TRole;
import org.apache.log4j.xml.DOMConfigurator;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author 石头哥哥 </br>
 *         Project : dcserver1.3</br>
 *         Date: 11/24/13  11</br>
 *         Time: 12:06 PM</br>
 *         Connect: 13638363871@163.com</br>
 *         packageName: testTX</br>
 *         注解：  事务测试
 */
@Service("troleservice")
public class TRoleService {

    @Resource
    private TRoleMapper tRoleMapper;

    @Resource
    private PlayerService playerService;

    /**
     * 事务处理必需抛出异常 spring 才会帮事务回滚
     * 可在 @Transactional 注解中设置：事务隔离级别(一般不修改)、事务传播行为、事务超时时间、是否只读事务。
     * @param tRole
     *  默认为可读写
     *  事务隔离级别用于处理多事务并发的情况，通常使用数据库的默认隔离级别即可，基本不需要进行设置
     * spring 默认事务传播行为   :REQUIRED
     * 在单独使用不带任何参数的 @Transactional 注释时，传播模式要设置为 REQUIRED，
     * 只读标志设置为 false(即是可读写)，事务隔离级别设置为 READ_COMMITTED，而且事务不会针对受控异常（checked exception）回滚。
     */
//    @Transactional
    public TRole insertService(TRole tRole) throws dataException {
        tRoleMapper.insert(tRole)  ;
        System.out.println(tRole);
        return tRole;
//        throw new dataException("测试回滚.......");
    }


    public static void main(String[]args){

        DOMConfigurator.configure("res/log4j.xml");
        /**初始化spring容器*/
        FileSystemXmlApplicationContext springContext = new FileSystemXmlApplicationContext(Config.DEFAULT_VALUE.FILE_PATH.SPRING_CONFIG_PATH);
        TRoleService tRoleService= (TRoleService) springContext.getBean("troleservice");
        TRole tRole=new TRole();
        tRole.setRolename("tttttyyuu");
        try {
//            tRoleService.playerService.insertRole(tRole);
//            TRole role=tRoleService.insertService(tRole);
//            System.out.println(role);
        } catch (RuntimeException e){
              //do nothing
        }

    }

}
